﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using DataAccessLayer;
using BusinessLogicLayer;

namespace ChamCong.NhanVien
{
    public partial class BaoCaoCongViec : BasePage
    {
        GiaoViecBLL gvBLL = new GiaoViecBLL();
        CT_GiaoViecBLL ctgvBLL = new CT_GiaoViecBLL();
        NhanVienBLL nvBLL = new NhanVienBLL();
        PhanQuyenBLL pq = new PhanQuyenBLL();
        QuanLyPhanQuyenBLL q = new QuanLyPhanQuyenBLL();

        public static int _macv;
        public static int _magv;
        public static int _MaPB;
        public static int _MaNV;
        public static int _ttd, range;

        protected void Page_Load(object sender, EventArgs e)
        {
            _ttd = Convert.ToInt32(Request.QueryString["ttd"]);
            //try
            //{
                range = Convert.ToInt32(Request.QueryString["pv"]);
                if (_ttd != 0)
                {
                }
                else
                {
                    _ttd = 2;
                }
                if (!IsPostBack)
                {
                    //Session["MaNV"] = 1001;
                    if (Session["MaNV"] == null)
                    {
                        Response.Write("<script>alert('Vui lòng đăng nhập.');history.go(-1);</script>");
                    }
                    else
                    {

                        _MaNV = Convert.ToInt32(Session["MaNV"]);
                        _MaPB = nvBLL.TimPhongBan(_MaNV);

                        bindGridView(_MaNV, _ttd);
                    }
                }
            //}
            //catch (Exception ex)
            //{
            //    sbcMsgBox1.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", ex.Message);
            //}
        }

        public void bindGridView(int _manv, int _ttd)
        {
            tbNhapKQ.Visible = false;
            txtChuThich.Visible = false;
            txtChuThich.Enabled = false;
            btnGuiBaoCao.Visible = false;
            lbChuThich.Visible = false;

            if (gvBLL.LayDanhSachGiaoViec(_manv, 0, _ttd).Count > 0)
            {
                gvGiaoViec.DataSource = gvBLL.LayDanhSachGiaoViec(_MaNV, 0, _ttd);
                gvGiaoViec.DataBind();
            }
            else
            {
                sbcMsgBox1.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Warning, "Thông báo", "Hiện thời không có dữ liệu!");
            }
        }

        protected void gvGiaoViec_rdb(object sender, GridViewRowEventArgs e)
        {
            GridViewRow gvr = (GridViewRow)e.Row;

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Find your controls
                LinkButton _linkbutton = (LinkButton)gvr.FindControl("likbtnChiTiet");

                // this is ghetto, but you can, add orderid and other data to attributes so we can grab them later           
                string ma = DataBinder.Eval(e.Row.DataItem, "MaGiaoViec").ToString();

                _linkbutton.Attributes.Add("MaGiaoViec", ma);
            } // end if this is a real row

            if (DataBinder.Eval(e.Row.DataItem, "TrangThaiDoc") == null)
            { }
            else
            {
                int ttd = int.Parse(DataBinder.Eval(e.Row.DataItem, "TrangThaiDoc").ToString());
                if (ttd == 0)
                {
                    e.Row.Attributes.Add("style", "font-weight:bold;");
                }

            }
        }

        /// <summary>
        /// Nhập kết quả công việc (công việc được giao)
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void likbtnChiTiet_Click(object sender, EventArgs e)
        {
            try
            {
                LinkButton linkbtn = (LinkButton)sender;
                _magv = int.Parse(linkbtn.Attributes["MaGiaoViec"]);
                txtChuThich.Visible = true;

                gvCTGiaoViec.Visible = true;

                gvCTGiaoViec.DataSource = ctgvBLL.LayDSCTGiaoViec2(_magv);

                lbChuThich.Enabled = false;
                

                if (_ttd == 3 || _ttd == 4)
                {
                    gvCTGiaoViec.Columns[6].Visible = false;
                }

                if (gvBLL.LayGiaoViec(_magv).TrangThaiDoc == 0)
                {
                    //nếu xem chi tiết GV được duyệt và không duyệt - thì trạng thái đọc chuyển về 1 !!!!
                    if (_ttd == 4 || _ttd == 5)
                    {
                        //chuyen trang thai doc = 1
                        GIAOVIEC gv = new GIAOVIEC();
                        gv.MaGiaoViec = _magv;
                        gv.TrangThaiDoc = 1;
                        gvBLL.Sua(gv);
                    }
                    else
                    { }

                    bindGridView(_MaNV, _ttd);
                }
                
                gvCTGiaoViec.DataBind();

                if (_ttd == 2 || _ttd == 5)
                {
                    btnGuiBaoCao.Visible = true;
                }
                else
                {
                    btnGuiBaoCao.Visible = false;
                }
            }
            catch(Exception ex) {
                sbcMsgBox.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", ex.ToString());
            }
        }

        /// <summary>
        /// Gửi báo cáo công việc
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void btnGuiBaoCao_Click(object sender, EventArgs e)
        {
            try
            {
                //Kiểm tra có kết quả hết chưa
                if (ctgvBLL.KiemTraKetQua(_magv) == true)
                {
                    sbcMsgBox.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", "Một số công việc chưa có kết quả!");
                }
                else
                {
                    GIAOVIEC a = new GIAOVIEC();
                    a.MaGiaoViec = _magv;
                    a.TrangThai = 3;
                    gvBLL.Sua(a);

                    bindGridView(_MaNV, _ttd);

                    tbNhapKQ.Visible = false;
                    gvCTGiaoViec.Visible = false;
                    btnGuiBaoCao.Visible = false;
                    txtChuThich.Visible = false;
                    lbChuThich.Visible = false;

                    sbcMsgBox.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Success, "Thông báo", "Báo cáo đã được gửi đi!");
                }
            }
            catch { }
        }

        protected void gvCTGiaoViec_rdb(object sender, GridViewRowEventArgs e)
        {
            GridViewRow gvr = (GridViewRow)e.Row;

            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                // Find your controls
                Button _button = (Button)gvr.FindControl("btnSuaKQ");

                // this is ghetto, but you can, add orderid and other data to attributes so we can grab them later           
                string ma = DataBinder.Eval(e.Row.DataItem, "MaCongViec").ToString();

                _button.Attributes.Add("MaCongViec", ma);
            } // end if this is a real row

            //tùy chỉnh màu cho kết quả
            if (DataBinder.Eval(e.Row.DataItem, "KetQua") == null)
            { }
            else
            {
                float chitieu = float.Parse(DataBinder.Eval(e.Row.DataItem, "ChiTieu").ToString());
                float ketqua = float.Parse(DataBinder.Eval(e.Row.DataItem, "KetQua").ToString());

                if (ketqua > (chitieu + (chitieu * 0.2)))
                {
                    gvr.Cells[5].BackColor = System.Drawing.Color.PowderBlue;
                }
                else if (ketqua < (chitieu - (chitieu * 0.2)))
                {
                    //gvr.Cells[5].ForeColor = System.Drawing.Color.Red;
                    gvr.Cells[5].BackColor = System.Drawing.Color.LightPink;
                }
                else
                {
                    gvr.Cells[5].BackColor = System.Drawing.Color.PaleGreen;
                }
            }
        }

        protected string AutoConvert(object ketqua)
        {
            if (ketqua == null)
            {
                return "";
            }
            else
            {
                return (float.Parse(ketqua.ToString())).ToString();
            }
        }

        protected void btnSuaKQ_Click(object sender, EventArgs e)
        {
            try
            {
                Button btn = (Button)sender;
                _macv = int.Parse(btn.Attributes["MaCongViec"]);
                tbNhapKQ.Visible = true;

                CT_GIAOVIEC a = ctgvBLL.LayCTGiaoViec(_macv);
                lbCongViec.Text = a.TenCongViec.ToString();
            }
            catch { }
        }

        protected void btnOK_Click(object sender, EventArgs e)
        {
            try
            {
                CT_GIAOVIEC a = new CT_GIAOVIEC();
                a.MaCongViec = _macv;
                if (txtKetQua.Text.Trim() != "")
                {
                    a.KetQua = float.Parse(txtKetQua.Text);
                    ctgvBLL.Sua(a);
                }
                else 
                {
                    sbcMsgBox2.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", "Dữ liệu trống!");
                }

                gvCTGiaoViec.DataSource = ctgvBLL.LayDSCTGiaoViec2(_magv);
                gvCTGiaoViec.DataBind();
                tbNhapKQ.Visible = false;
            }
            catch 
            {
                sbcMsgBox2.SetTitleText(SBWebControls.sbcMsgBox.eMessageType.Error, "Thông báo", "Kết quả làm việc phải là một số tự nhiên");
            }
        }

        protected void gvGiaoViec_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvGiaoViec.PageIndex = e.NewPageIndex;
            this.bindGridView(_MaNV, _ttd); ;
        }

    }
}